/*
 * Nodo.h
 *
 *  Created on: 24/10/2009
 *      Author: julfc
 */

#ifndef NODO_H_
#define NODO_H_

#include <iostream>
#include <fstream>
#include <list>
#include <string.h>
#include <stdexcept>
#include <stdio.h>


#include "Referencia.h"
#include "RegistroArbol.h"


using namespace std;


class Nodo {
public:
	short tipo;
	int cantClavesUsadas;
	int cantRegistrosUsados;
	int numBloque;
	int siguiente;

	list<string>*  claves;
	list<Referencia>*  punteros;
	list<RegistroArbol>*  registros;

	Nodo(short tipo);

	Nodo();

	void Save(fstream* file, int offset, short raiz, short hoja, short indice) throw (exception);

	Nodo Obtener(fstream* file, int offset, short raiz, short hoja, int longClave) throw (exception);

	void Limpiar();

	bool operator == (const Nodo &p) {
		return (this->numBloque == p.numBloque && this->siguiente == p.siguiente);
	}

	virtual ~Nodo();
};

#endif /* NODO_H_ */
